// 以下为通过异步模式获取文件信息的语法格式：
//
// fs.stat(path, callback)
// 参数
// 参数使用说明如下：
//
// path - 文件路径。
//
// callback - 回调函数，带有两个参数如：(err, stats), stats 是 fs.Stats 对象。
//
// fs.stat(path)执行后，会将stats类的实例返回给其回调函数。
// 可以通过stats类中的提供方法判断文件的相关属性。例如判断是否为文件：
//
// var fs = require('fs');
//
// fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
//     console.log(stats.isFile());         //true
// })



// stats类中的方法有：
//
// 方法	描述
// stats.isFile()	如果是文件返回 true，否则返回 false。
// stats.isDirectory()	如果是目录返回 true，否则返回 false。
// stats.isBlockDevice()	如果是块设备返回 true，否则返回 false。
// stats.isCharacterDevice()	如果是字符设备返回 true，否则返回 false。
// stats.isSymbolicLink()	如果是软链接返回 true，否则返回 false。
// stats.isFIFO()	如果是FIFO，返回true，否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
// stats.isSocket()	如果是 Socket 返回 true，否则返回 false。
// 实例
// 接下来我们创建 file.js 文件，代码如下所示：


var fs = require("fs");

console.log("准备打开文件！");
fs.stat('input.txt', function (err, stats) {
    if (err) {
        return console.error(err);
    }
    console.log(stats);
    console.log("读取文件信息成功！");

    // 检测文件类型
    console.log("是否为文件(isFile) ? " + stats.isFile());
    console.log("是否为目录(isDirectory) ? " + stats.isDirectory());
});

/*
准备打开文件！
Stats {
    dev: 1991837282,
        mode: 33206,
        nlink: 1,
        uid: 0,
        gid: 0,
        rdev: 0,
        blksize: 4096,
        ino: 562949953672701,
        size: 257,
        blocks: 0,
        atimeMs: 1587208898658.5757,
        mtimeMs: 1587208898658.5757,
        ctimeMs: 1587208898658.5757,
        birthtimeMs: 1587199511928.0369,
        atime: 2020-04-18T11:21:38.659Z,
        mtime: 2020-04-18T11:21:38.659Z,
        ctime: 2020-04-18T11:21:38.659Z,
        birthtime: 2020-04-18T08:45:11.928Z
}
读取文件信息成功！
是否为文件(isFile) ? true
    是否为目录(isDirectory) ? false
    */
